AWS DataSync Agent を KVM で動かしてデータ転送してみた
はじめに
KVM(Kernel-based Virtual Machine)は、Linux カーネルに組み込まれた仮想化ソリューションです。本記事では、オンプレミス環境下で DataSync Agent を KVM 上で起動しデータ転送までを行った動作確認結果を共有します。
検証環境
物理マシンで検証を実施しました。EC2 では KVM を利用できないためです。
項目 | 詳細 |
---|---|
CPU | AMD Ryzen 5 2400G |
メモリ | 16GB DDR4-2666 |
ストレージ | Samsung SSD 250GB 850 EVO |
OS | Ubuntu 24.04.1 LTS |
データ転送元となる NFS サーバーを用意するまでの体力がありませんでした。KVM のホストマシンを NFS サーバーにしてエクスポートしたディレクトリを転送対象としました。
KVM の導入方法は以下の記事をご参照ください。
DataSync Agent セットアップ
DataSync Agent イメージの準備
まず、AWS が提供する KVM 用の DataSync Agent イメージをダウンロードします。
リンクをコピーしてwget
コマンドでダウンロードしました。
wget https://d8vjazrbkazun.cloudfront.net/AWS-DataSync-Agent-KVM.zip
unzip AWS-DataSync-Agent-KVM.zip
ダウンロードしたイメージを確認します。展開後のイメージサイズは 1.9GB でした。
$ ls -lh
合計 2.6G
-rw-rw-r-- 1 ohmura ohmura 645M 10月 21 04:23 AWS-DataSync-Agent-KVM.zip
-rw-r--r-- 1 ohmura ohmura 1.9G 10月 20 22:00 aws-datasync-2.0.1729429015.1-x86_64.xfs.gpt.qcow2
展開したイメージを KVM の規定ディレクトリに移動します。
$ sudo mv ./aws-datasync-2.0.1729429015.1-x86_64.xfs.gpt.qcow2 /var/lib/libvirt/images
仮想マシンの作成と起動
以下のコマンドで DataSync Agent の仮想マシンを作成します。
sudo virt-install \
--name "DataSync-Agent" \
--description "AWS DataSync agent" \
--ram=4096 \
--vcpus=4 \
--disk path=/var/lib/libvirt/images/aws-datasync-2.0.1729429015.1-x86_64.xfs.gpt.qcow2,bus=virtio \
--network bridge=br0 \
--graphics spice \
--import \
--osinfo detect=on,require=off
起動させるために試行錯誤した結果、上記のコマンドで落ち着きました。実行時に表示される以下の警告は無視して問題ありませんでした。
- osifo に関する警告
- グラフィックスに関する警告
- ゲストコンソールに関する警告
WARNING Using --osinfo generic, VM performance may suffer. Specify an accurate OS for optimal results.
WARNING グラフィックスが要求されていますが DISPLAY 変数が設定されていません。virt-viewer を起動できません。
WARNING ゲストのコンソールがないため、デフォルト値 --wait -1 を適用します
インストールの開始中...
ドメインを作成中... | 0 B 00:00:00
ドメインは動作中です。インストールが続いているものと思われます。
インストールが完了するまで待機しています。
# Control + C で抜ける
仮想マシンのインストールが中断されました。
ユーザーからの要求でインストールを強制終了しました
仮想マシンの起動状態を確認します。
$ sudo virsh list --all
[sudo] ohmura のパスワード:
Id Name State
---------------------------------
1 DataSync-Agent running
DataSync Agent へコンソール接続
仮想マシンのコンソールに接続します。
$ sudo virsh console DataSync-Agent
Connected to domain 'Datasync-Agent'
Escape character is ^] (Ctrl + ])
# Enter 入力後、ユーザー名: admin パスワード: password を入力
Login to change your network configuration and other appliance settings.localhost login: admin
Password: password
ログイン後、以下のメニューが表示されます。
AWS DataSync Activation - Configuration
#######################################################################
## Currently connected network adapters:
##
## eth0: 192.168.20.216
#######################################################################
1: Network Configuration
2: Test Network Connectivity
3: Test Connectivity to Self-Managed Storage
4: View System Resource Check (1 WARNING)
5: System Time Management
6: Command Prompt
7: Upload agent logs via pre-signed S3 URL
0: Get activation key
Press "x" to exit session
Enter command:
ここまで確認できれば、ひとまず仮想マシンとして DataSync Agent の立ち上げに成功です。
DataSync Agent の各種テスト
DataSync Agent の正常性を確認するため、以下のテストを実施します。
- ネットワーク接続テスト
- ストレージ接続テスト
- システムリソースチェック
これらのテストで、AWS サービスとの通信や、仮想マシンに割当てたシステムリソースの確保状況を確認できます。
ネットワーク接続テスト
DataSync Agent の設定画面から2: Test Network Connectivity
を実行します。
パブリックエンドポイントを選択し、ap-northeast-1 リージョンを指定してテストしパスしました。
ネットワークテスト結果
AWS DataSync Activation - Test Network Connectivity
Choose the service endpoint type that this agent will connect to:
1: Public endpoints
2: FIPS endpoints
3: VPC Endpoints using AWS PrivateLink
Press "x" to exit
Select service endpoint type or exit: 1
Enter AWS Region (e.g. us-east-1): ap-northeast-1
Connectivity Test Results - PUBLIC endpoints
> d3dvvaliwoko8h.cloudfront.net:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> activation.datasync.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> cp.datasync.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> datasync.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> datasync-updates-ap-northeast-1.s3.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com:443
[ SSL TEST: PASSED ]
[ NETWORK TEST: PASSED ]
> 54.201.223.107(SUPPORT_CHANNEL_ENDPOINT):22
[ NETWORK TEST: PASSED ]
Press return to continue
ストレージ接続テスト
DataSync Agent の設定画面から3: Test Connectivity to Self-Managed Storage
を実行します。
NFS サーバーを指定し、NFS サーバーの IP アドレスを入力してテストしパスしました。
ストレージ接続テスト結果
AWS DataSync - Test Connectivity to Self-Managed Storage
Choose the location type for the connectivity test:
1: NFS server
2: SMB server
3: Object storage
4: HDFS
5: Azure Blob
Press "x" to exit
Select location type or exit: 1
IPv4 or NFS server name: 192.168.20.221
Connectivity Test Results
> 192.168.20.221:2049
[ PASSED ]
Press return to continue
システムリソースチェック
DataSync Agent の設定画面から4: View System Resource Check
を実行します。
検証機では必要スペックを満たせていません。本番環境では推奨スペックでの利用を推奨します。
AWS DataSync Activation - System Resource Check Results
Last Checked at 2024-10-28 05:45:26 +0000
[ OK ] CPU Cores Check
[ OK ] Disk Size Check
[WARN] RAM Check: Detected 4 GiB of memory (32 GiB required for up to 20 million file transfers, 64 GiB required for more than 20 million file transfers)
[ OK ] CPU Flags Check
Press Return to Continue
DataSync Agent のアクティベーション
マネージメントコンソールから DataSync サービスを開いている端末が、ローカルネットワーク経由で DataSync Agent の80 番ポートへアクセスできる場合のアクティベーション方法を試してみます。
アクティベーション
「エージェントを作成する」を選択し、ハイパーバイザーは KVM を選択します。今回の DataSync Agent はインターネット経由でデータ転送するため、パブリックエンドポイントを選択します。
このマネージメントコンソールを開いている端末がローカルネットワークで DataSync Agent の 80 番ポートにアクセスできる場合は、今回の方法でアクティベートが可能です。エージェントのアドレスに DataSync Agent のプライベート IP を入力します。
すると、DataSync Agent からアクティベーションキーを自動的に取得してくれます。エージェント名の入力と、必要に応じてタグを設定し、「エージェントを作成」をクリックします。
アクティベーションが成功すると、エージェントのステータスが「オンライン」と表示されます。
データ転送動作確認
DataSync Agent のアクティベーションが完了したので、実際のデータ転送プロセスを通じて DataSync の動作確認を行います。通常の DataSync のタスク作成手順と同じです。簡単に触れます。
DataSync コンソールで「タスクの作成」を選択します。
ソースロケーションとして、先ほどアクティベートしたエージェントと転送元のストレージ(NFS サーバー)を指定します。
オンプレミスの NFS サーバーから S3 へ転送するタスクを作成し、タスクを実行しました。データ転送は正常終了しました。
S3 バケットを確認し、データが正しく転送されていることを確認しました。
推奨スペックを満たさないメモリ割当の DataSync Agent てでしたが、約 650MB のデータ転送は問題なくできました。
まとめ
- KVM による仮想化で DataSync Agent の動作確認をしました
- KVM 上で DataSync Agent の起動の確認
- DataSync Agent を利用したデータ転送の確認
- 本番環境では必ず推奨スペックを満たす構成を用意してください
おわりに
久々に KVM と、NFS サーバーの設定をして良い復習の機会となりました。